#ifndef _DIC_H_
#define _DIC_H_

#include "SplitTool.h"
#include "cppjieba/Jieba.hpp"
#include <map>
#include <set>
#include <string>
#include <unordered_set>
#include <utility>
#include <vector>

using std::map;
using std::pair;
using std::set;
using std::string;
using std::unordered_set;
using std::vector;

class DictProducer {
    // 用于创建词典
  public:
    DictProducer(Configuration *);
    ~DictProducer();
    void buildEnDict();
    void buildCnDict();
    void createIndex();
    void store(const string &);

  private:
    void dealEngWorld(const string &, const string &);
    void dealChsWorld(const string &, const string &);

  private:
    vector<string> _files; // 语料库文件的绝对路径集合

    map<string, int> _eng_text;          // 英文词典
    unordered_set<string> _eng_stop;     // 英文停用词
    vector<pair<string, int>> _eng_dict; // vector英文词典
    map<string, set<int>> _eng_index;    // 英文词典索引

    map<string, int> _chs_text;          // 中文词典
    unordered_set<string> _chs_stop;     // 英文停用词
    vector<pair<string, int>> _chs_dict; // vector中文词典
    map<string, set<int>> _chs_index;    // 中文词典索引

    SplitTool *_cuttor; // 分词工具
};

#endif